package cnn.testmpt;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
 * @Author khe
 * @Date 2018/12/5
 */

/***
 * 说明Function接口提供了apply方法，实现一个传入泛型为T的对象返回一个泛型为R的对象
 */
public class FunctionTest {
    /***
     * 这里使用官方的例子,实现的功能是传入个T泛型的List,返回一个R泛型的List
     * @param list
     * @param function
     * @param <T>
     * @param <R>
     * @return
     */
    public static <T, R> List<R> map(List<T> list, Function<T, R> function) {
        List<R> result = new ArrayList<>();
        for (T t : list) {
            result.add(function.apply(t));
        }
        return result;
    }

    public static void main(String[] args) {
        //将String类型的list转换为字符串长度的List
        List<String> stringList = Arrays.asList("11", "222", "3333");
        List<String> list = map(stringList, (String s) -> {
            s.length();
            System.out.println(s);

            return s;
        });
//        for (String i : list) {
//            System.out.println(i);
//        }
    }


}


